From 4bd8742a4de5e2289d8296395a185b75c5967fd9 Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Mon, 30 Jul 2007 16:07:11 -0600 Subject: [PATCH] [IA64] Declarations for PKR Added new declarations for protection keys and define XEN_IA64_NPKRS representing number of PKRs for PV domains. Signed-off-by: Dietmar Hahn --- xen/arch/ia64/xen/fw_emul.c | 2 +- xen/include/asm-ia64/xenkregs.h | 24 ++++++++++++++++++++---- xen/include/asm-ia64/xenprocessor.h | 13 +++++++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/xen/arch/ia64/xen/fw_emul.c b/xen/arch/ia64/xen/fw_emul.c index 12eabeb44d..4b25001750 100644 --- a/xen/arch/ia64/xen/fw_emul.c +++ b/xen/arch/ia64/xen/fw_emul.c @@ -669,7 +669,7 @@ xen_pal_emulator(unsigned long index, u64 in1, u64 in2, u64 in3) { .vw = 1, .phys_add_size = 44, .key_size = 16, - .max_pkr = 15, + .max_pkr = XEN_IA64_NPKRS, .hash_tag_id = 0x30, .max_dtr_entry = NDTRS - 1, .max_itr_entry = NITRS - 1, diff --git a/xen/include/asm-ia64/xenkregs.h b/xen/include/asm-ia64/xenkregs.h index 1953de858f..c269c84dd3 100644 --- a/xen/include/asm-ia64/xenkregs.h +++ b/xen/include/asm-ia64/xenkregs.h @@ -38,13 +38,29 @@ /* Some cr.itir declarations. */ #define IA64_ITIR_PS 2 #define IA64_ITIR_PS_LEN 6 -#define IA64_ITIR_PS_MASK (((__IA64_UL(1) << IA64_ITIR_PS_LEN) - 1) \ - << IA64_ITIR_PS) +#define IA64_ITIR_PS_MASK (((__IA64_UL(1) << IA64_ITIR_PS_LEN) - 1) \ + << IA64_ITIR_PS) #define IA64_ITIR_KEY 8 #define IA64_ITIR_KEY_LEN 24 #define IA64_ITIR_KEY_MASK (((__IA64_UL(1) << IA64_ITIR_KEY_LEN) - 1) \ << IA64_ITIR_KEY) -#define IA64_ITIR_PS_KEY(_ps, _key) (((_ps) << IA64_ITIR_PS) | \ - (((_key) << IA64_ITIR_KEY))) +#define IA64_ITIR_PS_KEY(_ps, _key) (((_ps) << IA64_ITIR_PS) | \ + (((_key) << IA64_ITIR_KEY))) + +/* Define Protection Key Register (PKR) */ +#define IA64_PKR_V 0 +#define IA64_PKR_WD 1 +#define IA64_PKR_RD 2 +#define IA64_PKR_XD 3 +#define IA64_PKR_MBZ0 4 +#define IA64_PKR_KEY 8 +#define IA64_PKR_KEY_LEN 24 +#define IA64_PKR_MBZ1 32 + +#define IA64_PKR_VALID (1 << IA64_PKR_V) +#define IA64_PKR_KEY_MASK (((__IA64_UL(1) << IA64_PKR_KEY_LEN) - 1) \ + << IA64_PKR_KEY) + +#define XEN_IA64_NPKRS 15 /* Number of pkr's in PV */ #endif /* _ASM_IA64_XENKREGS_H */ diff --git a/xen/include/asm-ia64/xenprocessor.h b/xen/include/asm-ia64/xenprocessor.h index 7a38f1bc8c..6dce305b9d 100644 --- a/xen/include/asm-ia64/xenprocessor.h +++ b/xen/include/asm-ia64/xenprocessor.h @@ -237,6 +237,19 @@ typedef union { u64 itir; } ia64_itir_t; +typedef union { + u64 val; + struct { + u64 v : 1; + u64 wd : 1; + u64 rd : 1; + u64 xd : 1; + u64 reserved1 : 4; + u64 key : 24; + u64 reserved2 : 32; + }; +} ia64_pkr_t; + #define dump_execution_state() printk("FIXME: implement ia64 dump_execution_state()\n"); #endif // _ASM_IA64_XENPROCESSOR_H -- 2.30.2